package cn.btks.backstagemanage.user.service;

import cn.btks.backstagemanage.user.pojo.User;
import cn.btks.commonserver.result.ResultState;

import java.io.IOException;

/**
 * @Author lijun
 * @Date 2021/1/7 11:24
 */
public interface UserService {

    /**
     * 根据用户名获取用户信息
     *
     * @param userName
     * @return
     */
    User findByUserName(String userName);

    /**
     * 根据ID获取用户信息
     *
     * @param id
     * @return
     */
    User findById(Long id);

    /**
     * 分页查询用户信息
     *
     * @param pageNumber
     * @param pageSize
     * @param userName   用户名
     * @param name       人员名称
     * @param unitId
     * @return
     */
    ResultState findPageList(Integer pageNumber, Integer pageSize, String userName, String name, Long unitId);

    /**
     * 分页查询用户信息
     *
     * @param pageNumber
     * @param pageSize
     * @param userName   用户名
     * @param name       人员名称
     * @param unitId
     * @return
     */
    ResultState findPageList1(Integer pageNumber, Integer pageSize, String userName, String name, Long unitId, Long cityId);

    /**
     * 保存用户信息
     *
     * @param user
     * @return
     */
    ResultState save(User user) throws Exception;

    /**
     * 更新用户信息
     *
     * @param user
     * @return
     */
    ResultState update(User user) throws Exception;

    /**
     * 根据ID删除用户及其关联信息
     *
     * @param id
     * @return
     */
    ResultState delete(Long id);

    /**
     * 根据用户ID删除关联角色信息
     *
     * @param id
     * @return
     */
    ResultState deleteConnection(Long id);

    /**
     * 修改密码
     *
     * @param oldPassword
     * @param newPassword
     * @param id
     * @return
     */
    ResultState updatePassword(String oldPassword, String newPassword, Long id) throws IOException;

    /**
     * 存储系统登录次数
     *
     * @param userName
     * @param name
     */
    void recordLoginCount(String userName, String name);

    /**
     * 查询系统登录次数
     *
     * @return
     */
    int getLoginRecord();
}
